home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.framework;
-
- import com.ibm.xml.internal.DefaultEntityHandler;
- import com.ibm.xml.internal.DefaultScanner;
- import com.ibm.xml.internal.DefaultValidationHandler;
- import com.ibm.xml.internal.ErrorCode;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.Reader;
- import java.text.MessageFormat;
- import java.util.Locale;
- import java.util.ResourceBundle;
- import org.xml.sax.DTDHandler;
- import org.xml.sax.DocumentHandler;
- import org.xml.sax.EntityResolver;
- import org.xml.sax.ErrorHandler;
- import org.xml.sax.InputSource;
- import org.xml.sax.Locator;
- import org.xml.sax.Parser;
- import org.xml.sax.SAXException;
- import org.xml.sax.SAXParseException;
-
- public abstract class XMLParser implements Parser, XMLDocumentTypeHandler, XMLDocumentHandler, XMLErrorHandler {
- private ParserState fParserState = new ParserState(this);
- protected XMLScanner fScanner;
- private XMLEntityHandler fEntityHandler;
- private ErrorHandler fSAXErrorHandler;
- protected Locale fLocale;
- protected ResourceBundle fResourceBundle;
- private boolean fAllowJavaEncodingName = false;
- private boolean fWarningOnDuplicateAttDef = false;
- private boolean fCheckNamespace = false;
- private boolean fContinueAfterFatalError = false;
- protected boolean fParseInProgress = false;
- protected boolean fNeedReset = false;
- private XMLDocumentHandler fDocHandler;
- private XMLDocumentTypeHandler fDocTypeHandler;
- private XMLValidationHandler fValidationHandler;
-
- protected XMLParser() {
- this.fScanner = new DefaultScanner(this.fParserState);
- this.fEntityHandler = new DefaultEntityHandler(this.fParserState);
- }
-
- public void reset() {
- this.fParserState.reset();
- this.fScanner.reset(this.fParserState);
- this.fEntityHandler.reset(this.fParserState);
- this.fNeedReset = false;
- }
-
- protected void resetOrCopy() {
- ParserState var1 = this.fParserState;
- this.fParserState = new ParserState(var1);
- this.fScanner.reset(this.fParserState);
- this.fEntityHandler.reset(this.fParserState);
- this.fNeedReset = false;
- }
-
- protected void checkHandlers() throws Exception {
- }
-
- public ParserState getParserState() {
- return this.fParserState;
- }
-
- public XMLScanner getScanner() {
- return this.fScanner;
- }
-
- protected Locator getLocator() {
- return this.fScanner.getLocator();
- }
-
- public void setAllowJavaEncodingName(boolean var1) {
- this.fAllowJavaEncodingName = var1;
- }
-
- public boolean getAllowJavaEncodingName() {
- return this.fAllowJavaEncodingName;
- }
-
- public void setWarningOnDuplicateAttDef(boolean var1) {
- this.fWarningOnDuplicateAttDef = var1;
- }
-
- public boolean getWarningOnDuplicateAttDef() {
- return this.fWarningOnDuplicateAttDef;
- }
-
- public void setCheckNamespace(boolean var1) {
- this.fCheckNamespace = var1;
- }
-
- public boolean getCheckNamespace() {
- return this.fCheckNamespace;
- }
-
- public void setContinueAfterFatalError(boolean var1) {
- this.fContinueAfterFatalError = var1;
- }
-
- public boolean getContinueAfterFatalError() {
- return this.fContinueAfterFatalError;
- }
-
- protected void setDocumentHandler(XMLDocumentHandler var1) {
- this.fDocHandler = var1;
- }
-
- public XMLDocumentHandler getDocumentHandler() {
- return this.fDocHandler;
- }
-
- protected void setDocumentTypeHandler(XMLDocumentTypeHandler var1) {
- this.fDocTypeHandler = var1;
- }
-
- public XMLDocumentTypeHandler getDocumentTypeHandler() {
- return this.fDocTypeHandler;
- }
-
- protected void setEntityHandler(XMLEntityHandler var1) {
- this.fEntityHandler = var1;
- }
-
- public XMLEntityHandler getEntityHandler() {
- return this.fEntityHandler;
- }
-
- public XMLErrorHandler getErrorHandler() {
- return this;
- }
-
- protected void setValidationHandler(XMLValidationHandler var1) {
- this.fValidationHandler = var1;
- }
-
- public XMLValidationHandler getValidationHandler() {
- return this.fValidationHandler;
- }
-
- protected void useDefaultValidationHandler() {
- this.fValidationHandler = new DefaultValidationHandler(this.fParserState);
- }
-
- public void loadCatalog(InputSource var1) throws Exception {
- XMLEntityHandler var2 = this.getEntityHandler();
- if (var2 != null) {
- EntityResolver var3 = var2.getEntityResolver();
- if (var3 != null) {
- if (var3 instanceof Catalog) {
- ((Catalog)var3).loadCatalog(var1);
- } else {
- throw new Exception("EntityResolver is not a Catalog");
- }
- } else {
- throw new Exception("Catalog not installed");
- }
- } else {
- throw new Exception("XMLEntityHandler not installed");
- }
- }
-
- public final void setLocale(Locale var1) throws SAXException {
- if (this.fParseInProgress) {
- throw new SAXException("setLocale may not be called while parsing");
- } else {
- if (this.fLocale != var1) {
- this.fLocale = var1;
- this.fResourceBundle = null;
- }
-
- }
- }
-
- public void setEntityResolver(EntityResolver var1) {
- if (this.fEntityHandler != null) {
- this.fEntityHandler.setEntityResolver(var1);
- }
-
- }
-
- public void setDTDHandler(DTDHandler var1) {
- }
-
- public void setDocumentHandler(DocumentHandler var1) {
- }
-
- public void setErrorHandler(ErrorHandler var1) {
- this.fSAXErrorHandler = var1;
- }
-
- public void parse(InputSource var1) throws SAXException, IOException {
- if (this.fParseInProgress) {
- throw new SAXException("parse may not be called while parsing");
- } else {
- if (this.fNeedReset) {
- this.resetOrCopy();
- }
-
- try {
- this.checkHandlers();
- this.fParseInProgress = true;
- this.fNeedReset = true;
- this.fScanner.scanDocument(var1);
- this.fParseInProgress = false;
- } catch (SAXException var3) {
- this.fParseInProgress = false;
- throw var3;
- } catch (IOException var4) {
- this.fParseInProgress = false;
- throw var4;
- } catch (Exception var5) {
- this.fParseInProgress = false;
- throw new SAXException(var5);
- }
- }
- }
-
- public void parse(String var1) throws SAXException, IOException {
- InputSource var2 = new InputSource(var1);
- this.parse(var2);
-
- try {
- Reader var3 = var2.getCharacterStream();
- if (var3 != null) {
- var3.close();
- return;
- }
-
- InputStream var4 = var2.getByteStream();
- if (var4 != null) {
- var4.close();
- return;
- }
- } catch (IOException var5) {
- }
-
- }
-
- public boolean sendCharDataAsCharArray() {
- return false;
- }
-
- protected boolean errorHandlingEnabled() {
- return this.fSAXErrorHandler != null;
- }
-
- protected void handleError(String var1, String var2) throws Exception {
- SAXParseException var3 = new SAXParseException(var2, this.getLocator());
- if (this.fSAXErrorHandler == null) {
- if (this.isFatal(var1)) {
- throw var3;
- }
- } else if (this.isWarning(var1)) {
- this.fSAXErrorHandler.warning(var3);
- } else if (this.isFatal(var1)) {
- this.fSAXErrorHandler.fatalError(var3);
- } else {
- this.fSAXErrorHandler.error(var3);
- }
- }
-
- protected final String getErrorMsgString(String var1, Object[] var2) {
- if (this.fResourceBundle == null) {
- if (this.fLocale == null) {
- this.fResourceBundle = ResourceBundle.getBundle("com.ibm.xml.internal.msg.Message");
- } else {
- this.fResourceBundle = ResourceBundle.getBundle("com.ibm.xml.internal.msg.Message", this.fLocale);
- }
- }
-
- String var3 = this.fResourceBundle.getString(var1);
- if (var2 != null) {
- try {
- var3 = MessageFormat.format(var3, var2);
- } catch (Exception var5) {
- var3 = this.fResourceBundle.getString(var1);
- String var4 = ErrorCode.getErrorKey(172);
- var3 = var3 + this.fResourceBundle.getString(var4);
- }
- }
-
- return var3;
- }
-
- protected final boolean isWarning(String var1) {
- boolean var2 = var1.startsWith("W_");
- return var2;
- }
-
- protected final boolean isFatal(String var1) {
- boolean var2 = var1.startsWith("E_");
- return var2;
- }
-
- public final void error(int var1) throws Exception {
- if (this.errorHandlingEnabled()) {
- String var2 = ErrorCode.getErrorKey(var1);
- String var3 = this.getErrorMsgString(var2, (Object[])null);
- this.handleError(var2, var3);
- }
- }
-
- public final void error1(int var1, int var2) throws Exception {
- String var3 = ErrorCode.getErrorKey(var1);
- if (!this.errorHandlingEnabled() && !this.isFatal(var3)) {
- this.fParserState.getStringPool().releaseString(var2);
- } else {
- String[] var4 = new String[]{this.fParserState.getStringPool().orphanString(var2)};
- String var5 = this.getErrorMsgString(var3, var4);
- this.handleError(var3, var5);
- }
- }
-
- public final void error2(int var1, int var2, int var3) throws Exception {
- String var4 = ErrorCode.getErrorKey(var1);
- if (!this.errorHandlingEnabled() && !this.isFatal(var4)) {
- this.fParserState.getStringPool().releaseString(var2);
- this.fParserState.getStringPool().releaseString(var3);
- } else {
- String[] var5 = new String[]{this.fParserState.getStringPool().orphanString(var2), this.fParserState.getStringPool().orphanString(var3)};
- String var6 = this.getErrorMsgString(var4, var5);
- this.handleError(var4, var6);
- }
- }
-
- public final void error3(int var1, int var2, int var3, int var4) throws Exception {
- String var5 = ErrorCode.getErrorKey(var1);
- if (!this.errorHandlingEnabled() && !this.isFatal(var5)) {
- this.fParserState.getStringPool().releaseString(var2);
- this.fParserState.getStringPool().releaseString(var3);
- this.fParserState.getStringPool().releaseString(var4);
- } else {
- String[] var6 = new String[]{this.fParserState.getStringPool().orphanString(var2), this.fParserState.getStringPool().orphanString(var3), this.fParserState.getStringPool().orphanString(var4)};
- String var7 = this.getErrorMsgString(var5, var6);
- this.handleError(var5, var7);
- }
- }
-
- public final void error4(int var1, int var2, int var3, int var4, int var5) throws Exception {
- String var6 = ErrorCode.getErrorKey(var1);
- if (this.errorHandlingEnabled() || !this.getContinueAfterFatalError() && this.isFatal(var6)) {
- String[] var7 = new String[]{this.fParserState.getStringPool().orphanString(var2), this.fParserState.getStringPool().orphanString(var3), this.fParserState.getStringPool().orphanString(var4), this.fParserState.getStringPool().orphanString(var5)};
- String var8 = this.getErrorMsgString(var6, var7);
- this.handleError(var6, var8);
- } else {
- this.fParserState.getStringPool().releaseString(var2);
- this.fParserState.getStringPool().releaseString(var3);
- this.fParserState.getStringPool().releaseString(var4);
- this.fParserState.getStringPool().releaseString(var5);
- }
- }
-
- public abstract void doctypeDecl(int var1) throws Exception;
-
- public abstract void startInternalSubset() throws Exception;
-
- public abstract void endInternalSubset() throws Exception;
-
- public abstract void startExternalSubset(int var1, int var2) throws Exception;
-
- public abstract void endExternalSubset() throws Exception;
-
- public abstract void elementDecl(int var1) throws Exception;
-
- public abstract void attlistDecl(int var1, int var2) throws Exception;
-
- public abstract void internalEntityDecl(int var1) throws Exception;
-
- public abstract void externalEntityDecl(int var1) throws Exception;
-
- public abstract void unparsedEntityDecl(int var1) throws Exception;
-
- public abstract void parameterEntityDecl(int var1) throws Exception;
-
- public abstract void notationDecl(int var1) throws Exception;
-
- public abstract void startDocument(int var1, int var2, int var3) throws Exception;
-
- public abstract void endDocument() throws Exception;
-
- public abstract void startElement(int var1, int var2) throws Exception;
-
- public abstract void endElement(int var1) throws Exception;
-
- public abstract void startEntityReference(int var1) throws Exception;
-
- public abstract void endEntityReference(int var1) throws Exception;
-
- public abstract void characters(int var1, boolean var2) throws Exception;
-
- public abstract void ignorableWhitespace(int var1, boolean var2) throws Exception;
-
- public abstract void processingInstruction(int var1, int var2) throws Exception;
-
- public abstract void comment(int var1) throws Exception;
-
- public abstract void characters(char[] var1, int var2, int var3, boolean var4) throws Exception;
-
- public abstract void ignorableWhitespace(char[] var1, int var2, int var3, boolean var4) throws Exception;
- }
-